
function getCurrentTime () {
    return +new Date();
}

function fn1 () {
    console.log('fn1')
}

function fn2 () {
    console.log('fn2')
}

function fn3 () {
    console.log('fn3')
    setTimeout(() => {
        console.log('fn4')
        let s = getCurrentTime()
        console.log(s - t)
    }, 1000);
}

let t = +new Date()
setTimeout(() => {
    let s = getCurrentTime()
    // 如果打印4000，说明倒计时在加入webapi开始倒计时，在整个程序结束后&倒计时结束加入
    console.log(s - t)
}, 1000);

// 2000，可以保证在Promise执行时，上一个1000的倒计时已经完成
while (true) {
    let s = getCurrentTime()
    if (s - t > 2000) {
        break;
    }
}

Promise.resolve().then(fn1).then(fn3)

fn2()

Promise.resolve().then(fn3).then(fn2)
// 保证整块代码结束是在4000ms后
while (true) {
    let s = getCurrentTime()
    if (s - t > 4000) {
        break;
    }
}


// 参考 ../md/时序
